class Animal:
    def __init__(self, name):
        self._name = name

    def run(self):
        print("动物会跑")

    @property
    def name(self):
        return self._name

    @name.setter
    def set_name(self,name):
        self._name=name

#父类中所有的方法都会被子类继承，包括特殊方法，也可以重写特殊方法
class Dog(Animal):

    def __init__(self, name,age):
        #继承父类的init方法，但是缺点是Animal是写死的，不灵活，类去调用init还需要传self
        #Animal.__init__(self,name)
        #super()可以获取当前类的父类，并且通过super调用父类方法的时候不需要传递self
        super().__init__(name)
        self._age = age

    def run(self):
        print("狗跑")

d=Dog("旺财","18")
print(d.__dict__)